//
//  XCSearchService.m
//  XCActionBar
//
//  Created by Pedro Gomes on 11/03/2015.
//  Copyright (c) 2015 Pedro Gomes. All rights reserved.
//

#import "XCActionIndex.h"
#import "XCSearchService.h"
#import "XCSearchStrategy.h"

////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
@interface XCSearchService ()

@property (nonatomic,   weak) id<XCActionIndex   > index;
@property (nonatomic        ) id<XCSearchStrategy> strategy;

@end

////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
@implementation XCSearchService

////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
- (instancetype)initWithIndex:(id<XCActionIndex>)index
                     strategy:(id<XCSearchStrategy>)strategy
{
    if((self = [super init])) {
        self.index    = index;
        self.strategy = strategy;
    }
    return self;
}

////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
- (void)performSearchWithQuery:(NSString *)expression completionHandler:(XCSearchServiceCompletionHandler)completionHandler
{
    NSParameterAssert(completionHandler);

    //    XCLog(@"<PerformSearchWithQuery>, <query=%@>, <results=%@>", expression, results);

    [self.strategy performSearchWithQuery:expression dataSet:self.index completionHandler:completionHandler];
}

////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
- (void)interruptSearches
{
    
}

////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
- (void)updateIndex:(id)index
{

}

@end
